<!DOCTYPE html>
<!-- 声明html5标准 -->
<html lang='zh'>
<!-- 这个主要是给搜索引擎看的，搜索引擎不会去判断该站点是中文站还是英文站，所以这句话就是让搜索引擎知道，你的站点是中文站
对html页面本身不会有影响,这些现在都是html规范，你的页面越规范，就越容易被收录 -->

<head>
    <meta charset='UTF-8'>
    <!-- 声明使用UTF-8 Unicode编码，UTF-8编码优先采用的编码 -->
    <meta http-equiv='X-UA-Compatible' content='IE=edge'>
    <!--  X-UA-Compatible是针对IE新加的一个设置 声明兼容到edge -->
    <meta name='viewport' content='width=device-width, initial-scale=no'>
    <!--width:可视区域的宽度，值可为数字或关键词device-width intial-scale:页面首次被显示是可视区域的缩放级别，取值1.0则页面按实际尺寸显示，无任何缩放 -->
    <title>Document</title>
    <!-- 引入vue.js -->
    <script src='./js/vue.js'></script>
</head>

<body>
    <div id='root'>
        <div id="box" ref="dom1"></div>
        <templ ref="dom2"></templ>
        <button @click="changeValue">改变子组件data里的值</button>
    </div>
    <template id="templ">
        <div>
            {{name}}
        </div>
    </template>
    <script>
        // ref怎么使用 ? 
        // 在标签内或组件标签内 写入ref="名字",在需要操作dom元素处写入this.$refs.名字 .
        // 如果给组件写入ref会获取到整个组件的实例.  父组件可以操作子组件的属性,相反子组件不能操作父组件 . 

        Vue.component("templ", {
            template: "#templ",
            data() {
                return { name: "天亮教育" }
            },
            methods: {
                eatFood() {
                    console.log("马上就可以吃饭了")
                }
            },
            mounted(){
                console.log(this.$refs.dom1)
            }
        })
        // let dom = document.getElementById('box')
        // 利用ref来获取dom元素
        let vue = new Vue({
            // 选择控制区域,通过选择器去选到他，工作中一般使用id选择器;
            el: '#root',
            // 数据储存位置
            data: {},
            // 方法的储存位置
            methods: {
                changeValue() {
                    console.log(this.$refs.dom2.name)
                    this.$refs.dom2.name = "我是用  过ref改变子组件data里面的值"
                    this.$refs.dom2.eatFood();
                }
            },
            // 最早能拿到dom元素声明周期.
            mounted() {
                console.log(this.$refs.dom1)
                this.$refs.dom1.innerHTML = "我是dom操作添加的值"

                // 可以通过ref 来获取子组件的data的值或执行methods方法. 

            }
        })
    </script>
</body>

</html>